Page({
  data: {
    banner: {
      imageUrl: '',
      linkType: 'page',
      linkTarget: '',
      isActive: true,
      sortOrder: 0
    }
  },

  onLoad(options) {
    if (options.id) {
      this.getBannerDetail(options.id)
    }
  },

  // 获取轮播图详情
  async getBannerDetail(id) {
    wx.showLoading({ title: '加载中' })
    try {
      const res = await wx.cloud.database()
        .collection('banners')
        .doc(id)
        .get()
      this.setData({
        banner: res.data
      })
    } catch (err) {
      console.error('获取详情失败:', err)
      wx.showToast({ title: '加载失败', icon: 'none' })
    }
    wx.hideLoading()
  },

  // 处理图片选择
  async chooseImage() {
    try {
      const res = await wx.chooseMedia({
        count: 1,
        mediaType: ['image'],
        sizeType: ['compressed']
      })
      this.setData({
        tempImagePath: res.tempFiles[0].tempFilePath
      })
    } catch (err) {
      console.error('选择图片失败:', err)
      wx.showToast({ title: '选择图片失败', icon: 'none' })
    }
  },

  // 表单输入处理
  onInputChange(e) {
    const { field } = e.currentTarget.dataset
    this.setData({
      [`banner.${field}`]: e.detail.value
    })
  },

  // 保存轮播图
  async saveBanner() {
    const { banner, tempImagePath } = this.data
    
    // 表单验证
    if (!banner.imageUrl && !tempImagePath) {
      return wx.showToast({ title: '请选择轮播图', icon: 'none' })
    }
    if (!banner.linkTarget) {
      return wx.showToast({ title: '请输入跳转目标', icon: 'none' })
    }

    wx.showLoading({ title: '处理中' })
    try {
      // 如果有新选择的图片，先上传
      let imageUrl = banner.imageUrl
      let oldImageToDelete = null
      if (tempImagePath) {
        const fileRes = await wx.cloud.uploadFile({
          cloudPath: `banners/${Date.now()}-${Math.floor(Math.random() * 1000)}`,
          filePath: tempImagePath
        })
        // 记录需要删除的旧图片
        if (banner.imageUrl) {
          oldImageToDelete = banner.imageUrl
        }
        imageUrl = fileRes.fileID
      }
      const db = wx.cloud.database()
      
      // 准备保存的数据，过滤掉系统字段
      const saveData = {
        imageUrl: imageUrl,
        title: banner.title,
        linkTarget: banner.linkTarget,
        sortOrder: banner.sortOrder,
        isActive: banner.isActive,
        createTime: banner.createTime || db.serverDate()
      }

      if (banner._id) {
        // 更新
        await db.collection('banners')
          .doc(banner._id)
          .update({
            data: saveData
          })
      } else {
        // 新增
        await db.collection('banners')
          .add({
            data: saveData
          })
      }
      wx.showToast({ title: '保存成功' })
      
      // 删除旧图片
      if (oldImageToDelete) {
        try {
          await wx.cloud.deleteFile({
            fileList: [oldImageToDelete]
          })
          console.log('旧图片删除成功:', oldImageToDelete)
        } catch (err) {
          console.error('旧图片删除失败:', err)
          // 不影响主流程，仅记录日志
        }
      }
      
      setTimeout(() => {
        wx.navigateBack()
      }, 1500)
    } catch (err) {
      console.error('保存失败:', err)
      wx.showToast({ 
        title: `保存失败: ${err.errMsg || err.message}`,
        icon: 'none',
        duration: 3000
      })
    }
    wx.hideLoading()
  }
})
